/*
 * Cliente.java
 *
 * Created on 30 de marzo de 2006, 08:25 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package ig.util;



import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 *
 * @author jsanchez
 */
public class Cliente {
    
    /** Creates a new instance of Cliente */
    public Cliente() {
    }
/**
     * Metodo que te da el hash MD5 en un String en caracteres
     hexadecimales
     * @param data Cadena de la cual queremos calcular el hash MD5
     * @param key Clave que emplearemos en el calculo del hash.
     * @return Un String con el valor resultante del hash en caracteres
     hexadecimales
    */
    public static String digest(String data, String key) {
        try{
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(data.getBytes()); 
            byte[] result =  md5.digest(key.getBytes());
            
            StringBuffer sb = new StringBuffer();            
            for(int i=0; i<result.length; i++){
                String s = Integer.toHexString(result[i]);
                int length = s.length();
                if(length >= 2)
                    sb.append(s.substring(length-2, length));
                else {
                    sb.append("0");
                    sb.append(s);
                }
            }
            return sb.toString();
        }
        catch(NoSuchAlgorithmException e){
            return null;
        }
    }

    /**
     * Ejemplo de uso de la funcion digest().
     * Este ejemplo lo he cogido de
     * <a
href="http://www.rfc-es.org/rfc/rfc1939-es.txt">http://www.rfc-es.org/rfc/rfc1939-es.txt</a>,
pagina 15
     */
    public static void main(String[] args) {
        String data = "<1896.697170952@dbc.mtview.ca.us>";
        String key = "tanstaaf";
        System.out.println("Ejemplo hash MD5");
        System.out.println("Este ejemplo lo he cogido de<http://www.rfc-es.org/rfc/rfc1939-es.txt>, página 15");
        System.out.println("\tdata :  "+data);
        System.out.println("\tkey  :  "+key);
        System.out.println("\thash :  "+digest(data, key));

        System.out.println("Podemos comprobar que el resultado es el mismo con lossiguientes datos:");
        data = data + key;
        key = "";
        System.out.println("\tdata :  "+data);
        System.out.println("\tkey  :  "+key);
        System.out.println("\thash :  "+digest(data, key));
    }
    
//    public static void main(String arg[]){
//        
//            String valor="j";
//            String valor1="j";
//            MessageDigest algoritm = null;
//            try {
//                algoritm = MessageDigest.getInstance("SHA1");
//            } catch (NoSuchAlgorithmException ex) {
//                ex.printStackTrace();
//            }
//            algoritm.update(valor.getBytes());            
//            algoritm.update(valor1.getBytes());
//            byte[] encriptado = algoritm.digest();
//            System.out.println("encriptado:"+encriptado);
//            
////            try {
////                Cliente cliente = new Cliente();
////                ig.metrica.modelos.SessionModelosRemote remoto=cliente.lookupNewSessionBean();
////                ModeloorigenesdatosDTO to= new ModeloorigenesdatosDTO ();
////                to.setModelo(1);
////                to.setOrigenesdatos(2);                
////                
////                ModeloorigenesdatosDTO to1= new ModeloorigenesdatosDTO ();
////                to1.setModelo(1);
////                to1.setOrigenesdatos(3);
////                
////                remoto.eliminar(to);
////                remoto.nuevo(to);
////                remoto.modificar(to,to1);
////                remoto.findAll();
////                //remoto.eliminar(to1);
////            } catch (RemoteException ex) {
////                ex.printStackTrace();
////            }
//    }
  
    
    private ig.util.ServiceLocator serviceLocator;

    private ig.util.ServiceLocator getServiceLocator() {
        if (serviceLocator == null) {
//            serviceLocator = new ig.util.ServiceLocator(true);
        }
        return serviceLocator;
    }

//    private ig.metrica.modelos.SessionModelosRemote lookupSessionModelosBean() {
//        try {
//            javax.naming.Context c = new javax.naming.InitialContext();
//            Object remote = c.lookup("java:comp/env/ejb/SessionModelosBean");
//            ig.metrica.modelos.SessionModelosRemoteHome rv = (ig.metrica.modelos.SessionModelosRemoteHome) javax.rmi.PortableRemoteObject.narrow(remote, ig.metrica.modelos.SessionModelosRemoteHome.class);
//            return rv.create();
//        }
//        catch(javax.naming.NamingException ne) {
//            java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,"exception caught" ,ne);
//            throw new RuntimeException(ne);
//        }
//        catch(javax.ejb.CreateException ce) {
//            java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,"exception caught" ,ce);
//            throw new RuntimeException(ce);
//        }
//        catch(java.rmi.RemoteException re) {
//            java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,"exception caught" ,re);
//            throw new RuntimeException(re);
//        }
//    }
    
    
    
}
